home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / CIncludes / Dialogs.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-11  |  12.5 KB  |  363 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Dialogs.h
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. */
  16.  
  17. #ifndef __DIALOGS__
  18. #define __DIALOGS__
  19.  
  20.  
  21. #ifndef __ERRORS__
  22. #include <Errors.h>
  23. #endif
  24. /*    #include <ConditionalMacros.h>                                */
  25.  
  26. #ifndef __MEMORY__
  27. #include <Memory.h>
  28. #endif
  29. /*    #include <Types.h>                                            */
  30. /*    #include <MixedMode.h>                                        */
  31.  
  32. #ifndef __WINDOWS__
  33. #include <Windows.h>
  34. #endif
  35. /*    #include <Quickdraw.h>                                        */
  36. /*        #include <QuickdrawText.h>                                */
  37. /*    #include <Events.h>                                            */
  38. /*        #include <OSUtils.h>                                    */
  39. /*    #include <Controls.h>                                        */
  40. /*        #include <Menus.h>                                        */
  41.  
  42. #ifndef __TEXTEDIT__
  43. #include <TextEdit.h>
  44. #endif
  45.  
  46. #ifdef __cplusplus
  47. extern "C" {
  48. #endif
  49.  
  50. #if GENERATINGPOWERPC
  51. #pragma options align=mac68k
  52. #endif
  53.  
  54. #ifdef __CFM68K__
  55. #pragma lib_export on
  56. #endif
  57.  
  58.  
  59. enum {
  60.     ctrlItem                    = 4,
  61.     btnCtrl                        = 0,
  62.     chkCtrl                        = 1,
  63.     radCtrl                        = 2,
  64.     resCtrl                        = 3,
  65.     statText                    = 8,
  66.     editText                    = 16,
  67.     iconItem                    = 32,
  68.     picItem                        = 64,
  69.     userItem                    = 0,
  70.     itemDisable                    = 128,
  71.     ok                            = 1,
  72.     cancel                        = 2,
  73.     stopIcon                    = 0,
  74.     noteIcon                    = 1,
  75.     cautionIcon                    = 2
  76. };
  77.  
  78. /* new, more standard names for dialog item constants */
  79. enum {
  80.     kControlDialogItem            = ctrlItem,
  81.     kButtonDialogItem            = btnCtrl,
  82.     kCheckBoxDialogITem            = chkCtrl,
  83.     kRadioButtonDialogItem        = radCtrl,
  84.     kResourceControlDialogItem    = resCtrl,
  85.     kStaticTextDialogItem        = statText,
  86.     kEditTextDialogItem            = editText,
  87.     kIconDialogItem                = iconItem,
  88.     kPictureDialogItem            = picItem,
  89.     kUserDialogItem                = userItem,
  90.     kIDODialogItem                = 24,
  91.     kItemDisableBit                = itemDisable,
  92.     kOkItemIndex                = ok,
  93.     kCancelItemIndex            = cancel,
  94.     kStopIcon                    = stopIcon,
  95.     kNoteIcon                    = noteIcon,
  96.     kCautionIcon                = cautionIcon
  97. };
  98.  
  99. typedef short DITLMethod;
  100.  
  101.  
  102. enum {
  103.     overlayDITL                    = 0,
  104.     appendDITLRight                = 1,
  105.     appendDITLBottom            = 2
  106. };
  107.  
  108. typedef short StageList;
  109.  
  110. typedef OSType DialogPropertyTag;
  111.  
  112. #if STRICT_WINDOWS
  113. typedef struct OpaqueDialogRef *DialogPtr;
  114.  
  115. typedef struct OpaqueDialogRef *DialogRef;
  116.  
  117. #else
  118. typedef WindowPtr DialogPtr;
  119.  
  120. typedef DialogPtr DialogRef;
  121.  
  122. #endif
  123. typedef pascal void (*SoundProcPtr)(short soundNumber);
  124. typedef pascal Boolean (*ModalFilterProcPtr)(DialogPtr theDialog, EventRecord *theEvent, short *itemHit);
  125. typedef pascal void (*UserItemProcPtr)(WindowPtr theWindow, short itemNo);
  126.  
  127. #if GENERATINGCFM
  128. typedef UniversalProcPtr SoundUPP;
  129. typedef UniversalProcPtr ModalFilterUPP;
  130. typedef UniversalProcPtr UserItemUPP;
  131. #else
  132. typedef SoundProcPtr SoundUPP;
  133. typedef ModalFilterProcPtr ModalFilterUPP;
  134. typedef UserItemProcPtr UserItemUPP;
  135. #endif
  136.  
  137. enum {
  138.     uppSoundProcInfo = kPascalStackBased
  139.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short))),
  140.     uppModalFilterProcInfo = kPascalStackBased
  141.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  142.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DialogPtr)))
  143.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EventRecord*)))
  144.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short*))),
  145.     uppUserItemProcInfo = kPascalStackBased
  146.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(WindowPtr)))
  147.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  148. };
  149.  
  150. #if GENERATINGCFM
  151. #define NewSoundProc(userRoutine)        \
  152.         (SoundUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppSoundProcInfo, GetCurrentArchitecture())
  153. #define NewModalFilterProc(userRoutine)        \
  154.         (ModalFilterUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppModalFilterProcInfo, GetCurrentArchitecture())
  155. #define NewUserItemProc(userRoutine)        \
  156.         (UserItemUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppUserItemProcInfo, GetCurrentArchitecture())
  157. #else
  158. #define NewSoundProc(userRoutine)        \
  159.         ((SoundUPP) (userRoutine))
  160. #define NewModalFilterProc(userRoutine)        \
  161.         ((ModalFilterUPP) (userRoutine))
  162. #define NewUserItemProc(userRoutine)        \
  163.         ((UserItemUPP) (userRoutine))
  164. #endif
  165.  
  166. #if GENERATINGCFM
  167. #define CallSoundProc(userRoutine, soundNumber)        \
  168.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppSoundProcInfo, (soundNumber))
  169. #define CallModalFilterProc(userRoutine, theDialog, theEvent, itemHit)        \
  170.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppModalFilterProcInfo, (theDialog), (theEvent), (itemHit))
  171. #define CallUserItemProc(userRoutine, theWindow, itemNo)        \
  172.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppUserItemProcInfo, (theWindow), (itemNo))
  173. #else
  174. #define CallSoundProc(userRoutine, soundNumber)        \
  175.         (*(userRoutine))((soundNumber))
  176. #define CallModalFilterProc(userRoutine, theDialog, theEvent, itemHit)        \
  177.         (*(userRoutine))((theDialog), (theEvent), (itemHit))
  178. #define CallUserItemProc(userRoutine, theWindow, itemNo)        \
  179.         (*(userRoutine))((theWindow), (itemNo))
  180. #endif
  181.  
  182. #if ! STRICT_WINDOWS
  183. struct DialogRecord {
  184.     WindowRecord                    window;
  185.     Handle                            items;
  186.     TEHandle                        textH;
  187.     short                            editField;
  188.     short                            editOpen;
  189.     short                            aDefItem;
  190. };
  191. typedef struct DialogRecord DialogRecord;
  192.  
  193. typedef DialogRecord *DialogPeek;
  194.  
  195. #endif
  196. struct DialogTemplate {
  197.     Rect                            boundsRect;
  198.     short                            procID;
  199.     Boolean                            visible;
  200.     Boolean                            filler1;
  201.     Boolean                            goAwayFlag;
  202.     Boolean                            filler2;
  203.     long                            refCon;
  204.     short                            itemsID;
  205.     Str255                            title;
  206. };
  207. typedef struct DialogTemplate DialogTemplate;
  208.  
  209. typedef DialogTemplate *DialogTPtr, **DialogTHndl;
  210.  
  211. struct AlertTemplate {
  212.     Rect                            boundsRect;
  213.     short                            itemsID;
  214.     StageList                        stages;
  215. };
  216. typedef struct AlertTemplate AlertTemplate;
  217.  
  218. typedef AlertTemplate *AlertTPtr, **AlertTHndl;
  219.  
  220. struct SelectionRange {
  221.     SInt16                            beginSelection;
  222.     SInt16                            endSelection;
  223. };
  224. typedef struct SelectionRange SelectionRange;
  225.  
  226. extern pascal void InitDialogs(void *ignored)
  227.  ONEWORDINLINE(0xA97B);
  228. extern pascal void ErrorSound(SoundUPP soundProc)
  229.  ONEWORDINLINE(0xA98C);
  230. extern pascal DialogRef NewDialog(void *wStorage, const Rect *boundsRect, ConstStr255Param title, Boolean visible, short procID, WindowRef behind, Boolean goAwayFlag, long refCon, Handle itmLstHndl)
  231.  ONEWORDINLINE(0xA97D);
  232. extern pascal DialogRef GetNewDialog(short dialogID, void *dStorage, WindowRef behind)
  233.  ONEWORDINLINE(0xA97C);
  234. extern pascal void CloseDialog(DialogRef theDialog)
  235.  ONEWORDINLINE(0xA982);
  236. extern pascal void DisposeDialog(DialogRef theDialog)
  237.  ONEWORDINLINE(0xA983);
  238. extern pascal void ParamText(ConstStr255Param param0, ConstStr255Param param1, ConstStr255Param param2, ConstStr255Param param3)
  239.  ONEWORDINLINE(0xA98B);
  240. extern pascal void ModalDialog(ModalFilterUPP modalFilter, short *itemHit)
  241.  ONEWORDINLINE(0xA991);
  242. extern pascal Boolean IsDialogEvent(const EventRecord *theEvent)
  243.  ONEWORDINLINE(0xA97F);
  244. extern pascal Boolean DialogSelect(const EventRecord *theEvent, DialogRef *theDialog, short *itemHit)
  245.  ONEWORDINLINE(0xA980);
  246. extern pascal void DrawDialog(DialogRef theDialog)
  247.  ONEWORDINLINE(0xA981);
  248. extern pascal void UpdateDialog(DialogRef theDialog, RgnHandle updateRgn)
  249.  ONEWORDINLINE(0xA978);
  250. extern pascal short Alert(short alertID, ModalFilterUPP modalFilter)
  251.  ONEWORDINLINE(0xA985);
  252. extern pascal short StopAlert(short alertID, ModalFilterUPP modalFilter)
  253.  ONEWORDINLINE(0xA986);
  254. extern pascal short NoteAlert(short alertID, ModalFilterUPP modalFilter)
  255.  ONEWORDINLINE(0xA987);
  256. extern pascal short CautionAlert(short alertID, ModalFilterUPP modalFilter)
  257.  ONEWORDINLINE(0xA988);
  258. extern pascal void GetDialogItem(DialogRef theDialog, short itemNo, short *itemType, Handle *item, Rect *box)
  259.  ONEWORDINLINE(0xA98D);
  260. extern pascal void SetDialogItem(DialogRef theDialog, short itemNo, short itemType, Handle item, const Rect *box)
  261.  ONEWORDINLINE(0xA98E);
  262. extern pascal void HideDialogItem(DialogRef theDialog, short itemNo)
  263.  ONEWORDINLINE(0xA827);
  264. extern pascal void ShowDialogItem(DialogRef theDialog, short itemNo)
  265.  ONEWORDINLINE(0xA828);
  266. extern pascal void SelectDialogItemText(DialogRef theDialog, short itemNo, short strtSel, short endSel)
  267.  ONEWORDINLINE(0xA97E);
  268. extern pascal void GetDialogItemText(Handle item, Str255 text)
  269.  ONEWORDINLINE(0xA990);
  270. extern pascal void SetDialogItemText(Handle item, ConstStr255Param text)
  271.  ONEWORDINLINE(0xA98F);
  272. extern pascal short FindDialogItem(DialogRef theDialog, Point thePt)
  273.  ONEWORDINLINE(0xA984);
  274. extern pascal DialogRef NewColorDialog(void *dStorage, const Rect *boundsRect, ConstStr255Param title, Boolean visible, short procID, WindowRef behind, Boolean goAwayFlag, long refCon, Handle items)
  275.  ONEWORDINLINE(0xAA4B);
  276. extern pascal short GetAlertStage( void )
  277.     TWOWORDINLINE( 0x3EB8, 0x0A9A ); /* MOVE.W $0A9A,(SP) */
  278. extern DialogRef newdialog(void *wStorage, const Rect *boundsRect, const char *title, Boolean visible, short procID, WindowRef behind, Boolean goAwayFlag, long refCon, Handle itmLstHndl);
  279. extern DialogRef newcolordialog(void *dStorage, const Rect *boundsRect, const char *title, Boolean visible, short procID, WindowRef behind, Boolean goAwayFlag, long refCon, Handle items);
  280. extern pascal void ResetAlertStage(void)
  281.  TWOWORDINLINE(0x4278, 0x0A9A);
  282. extern pascal void DialogCut(DialogRef theDialog);
  283. extern pascal void DialogPaste(DialogRef theDialog);
  284. extern pascal void DialogCopy(DialogRef theDialog);
  285. extern pascal void DialogDelete(DialogRef theDialog);
  286. extern pascal void SetDialogFont( short value )
  287.     TWOWORDINLINE( 0x31DF, 0x0AFA ); /* MOVE.W (SP)+,$0AFA */
  288. #if CGLUESUPPORTED
  289. extern void paramtext(const char *param0, const char *param1, const char *param2, const char *param3);
  290. extern void getdialogitemtext(Handle item, char *text);
  291. extern void setdialogitemtext(Handle item, const char *text);
  292. extern short finddialogitem(DialogRef theDialog, Point *thePt);
  293. #endif
  294. extern pascal void AppendDITL(DialogRef theDialog, Handle theHandle, DITLMethod method);
  295. extern pascal short CountDITL(DialogRef theDialog);
  296. extern pascal void ShortenDITL(DialogRef theDialog, short numberItems);
  297. extern pascal Boolean StdFilterProc(DialogRef theDialog, EventRecord *event, short *itemHit);
  298. extern pascal OSErr GetStdFilterProc(ModalFilterUPP *theProc)
  299.  THREEWORDINLINE(0x303C, 0x0203, 0xAA68);
  300. extern pascal OSErr SetDialogDefaultItem(DialogRef theDialog, short newItem)
  301.  THREEWORDINLINE(0x303C, 0x0304, 0xAA68);
  302. extern pascal OSErr SetDialogCancelItem(DialogRef theDialog, short newItem)
  303.  THREEWORDINLINE(0x303C, 0x0305, 0xAA68);
  304. extern pascal OSErr SetDialogTracksCursor(DialogRef theDialog, Boolean tracks)
  305.  THREEWORDINLINE(0x303C, 0x0306, 0xAA68);
  306. #if OLDROUTINENAMES
  307. #if !GENERATINGCFM
  308. extern pascal void CouldDialog(short dialogID)
  309.  ONEWORDINLINE(0xA979);
  310. extern pascal void FreeDialog(short dialogID)
  311.  ONEWORDINLINE(0xA97A);
  312. extern pascal void CouldAlert(short alertID)
  313.  ONEWORDINLINE(0xA989);
  314. extern pascal void FreeAlert(short alertID)
  315.  ONEWORDINLINE(0xA98A);
  316. #endif
  317. #define DisposDialog(theDialog) DisposeDialog(theDialog)
  318. #define UpdtDialog(theDialog, updateRgn) UpdateDialog(theDialog, updateRgn)
  319. #define GetDItem(theDialog, itemNo, itemType, item, box)  \
  320.     GetDialogItem(theDialog, itemNo, itemType, item, box)
  321. #define SetDItem(theDialog, itemNo, itemType, item, box)  \
  322.     SetDialogItem(theDialog, itemNo, itemType, item, box)
  323. #define HideDItem(theDialog, itemNo) HideDialogItem(theDialog, itemNo)
  324. #define ShowDItem(theDialog, itemNo) ShowDialogItem(theDialog, itemNo)
  325. #define SelIText(theDialog, itemNo, strtSel, endSel)  \
  326.     SelectDialogItemText(theDialog, itemNo, strtSel, endSel)
  327. #define GetIText(item, text) GetDialogItemText(item, text)
  328. #define SetIText(item, text) SetDialogItemText(item, text)
  329. #define FindDItem(theDialog, thePt) FindDialogItem(theDialog, thePt)
  330. #define NewCDialog(dStorage, boundsRect, title, visible, procID, behind, goAwayFlag, refCon, items)  \
  331.     NewColorDialog(dStorage, boundsRect, title, visible, procID, behind,  \
  332.     goAwayFlag, refCon, items)
  333. #define GetAlrtStage() GetAlertStage()
  334. #define ResetAlrtStage() ResetAlertStage()
  335. #define DlgCut(theDialog) DialogCut(theDialog)
  336. #define DlgPaste(theDialog) DialogPaste(theDialog)
  337. #define DlgCopy(theDialog) DialogCopy(theDialog)
  338. #define DlgDelete(theDialog) DialogDelete(theDialog)
  339. #define SetDAFont(fontNum) SetDialogFont(fontNum)
  340. #if CGLUESUPPORTED
  341. #define newcdialog(dStorage, boundsRect, title, visible, procID, behind, goAwayFlag, refCon, items)  \
  342.     newcolordialog(dStorage, boundsRect, title, visible, procID, behind,  \
  343.     goAwayFlag, refCon, items)
  344. #define getitext(item, text) getdialogitemtext(item, text)
  345. #define setitext(item, text) setdialogitemtext(item, text)
  346. #define findditem(theDialog, thePt) finddialogitem(theDialog, thePt)
  347. #endif
  348. #endif
  349.  
  350. #ifdef __CFM68K__
  351. #pragma lib_export off
  352. #endif
  353.  
  354. #if GENERATINGPOWERPC
  355. #pragma options align=reset
  356. #endif
  357.  
  358. #ifdef __cplusplus
  359. }
  360. #endif
  361.  
  362. #endif /* __DIALOGS__ */
  363.